package com.weimin.SportAppBackend.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.weimin.SportAppBackend.entity.Feedback;
import com.weimin.SportAppBackend.service.FeedbackService;
import com.weimin.SportAppBackend.mapper.FeedbackMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

import java.util.List;

/**
* @author huimin
* @description 针对表【feedback(用户反馈表)】的数据库操作Service实现
* @createDate 2025-06-25 19:00:36
*/
@Service
public class FeedbackServiceImpl extends ServiceImpl<FeedbackMapper, Feedback>
    implements FeedbackService{

    @Resource // 注入 FeedbackMapper
    private FeedbackMapper feedbackMapper;

    /**
     * 新增一条反馈记录
     * @param feedback 反馈实体对象
     * @return true 成功，false 失败
     */
    @Override
    public boolean addFeedback(Feedback feedback) {
        // 使用ServiceImpl提供的save方法
        return save(feedback);
    }

    /**
     * 根据ID获取反馈详情
     * @param id 反馈ID
     * @return 对应的反馈实体，如果不存在则返回 null
     */
    @Override
    public Feedback getFeedbackById(Long id) {
        // 使用ServiceImpl提供的getById方法
        return getById(id);
    }

    /**
     * 更新反馈记录
     * @param feedback 需要更新的反馈实体，ID必须存在
     * @return true 成功，false 失败
     */
    @Override
    public boolean updateFeedback(Feedback feedback) {
        // 使用ServiceImpl提供的updateById方法
        // 注意：feedback对象中必须包含ID，否则无法更新
        if (feedback.getId() == null) {
            throw new IllegalArgumentException("更新反馈时ID不能为空");
        }
        return updateById(feedback);
    }

    /**
     * 根据ID删除反馈记录
     * @param id 反馈ID
     * @return true 成功，false 失败
     */
    @Override
    public boolean deleteFeedback(Long id) {
        // 使用ServiceImpl提供的removeById方法
        return removeById(id);
    }

    /**
     * 获取所有反馈记录
     * @return 反馈列表
     */
    @Override
    public List<Feedback> getAllFeedbacks() {
        // 使用ServiceImpl提供的list方法，查询所有记录
        return list();
    }

    /**
     * 根据状态查询反馈记录
     * @param status 反馈状态
     * @return 状态匹配的反馈列表
     */
    @Override
    public List<Feedback> getFeedbacksByStatus(Integer status) {
        LambdaQueryWrapper<Feedback> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Feedback::getStatus, status); // WHERE status = ?
        return list(queryWrapper);
    }

    /**
     * 根据类型查询反馈记录
     * @param type 反馈类型
     * @return 类型匹配的反馈列表
     */
    @Override
    public List<Feedback> getFeedbacksByType(String type) {
        LambdaQueryWrapper<Feedback> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Feedback::getType, type); // WHERE type = ?
        return list(queryWrapper);
    }
}





